#include <iostream>
#include <vector>

using namespace std;

/**
  * @方法: 可以理解为层次遍历，或者最短路问题的简化
  * @时间复杂度: o(n)
  * @空间复杂度: o(1)
  * @评价: 官方解法，注意边界条件的巧妙处理
*/
int jump(vector<int>& nums) {
    int now_end = 0;
    int next_end = 0;
    int step = 0;
    for (int i = 0; i < nums.size() - 1; i++) {
        next_end = max(next_end, i + nums[i]);
        if (i == now_end) {
            now_end = next_end;
            step++;
        }
    }
    return step;
}

int main() {
    cout << "hello world" << endl;
    return 0;
}